package com.boarsoft.dao.sharding.executor;

/**
 * 分库分表SQL执行方法接口
 *
 */
public interface SqlRouteExecutor {
	/**
	 * 在指定分片下执行SQL方法（带返回值）
	 * 
	 * @param shard
	 *            分片号，即 DBP GROUP ID
	 * @param callBack
	 *            执行SQL的方法（带返回值）
	 * @return
	 */
	Object executeQuery(String shard, SqlCallBack callBack);

	/**
	 * 在指定分片下执行SQL方法（不带返回值）
	 * 
	 * @param shard
	 *            分片号，即 DBP GROUP ID
	 * @param callBack
	 *            执行SQL的方法（不带返回值）
	 * @return
	 */
	void execute(String shard, SqlVoidCallBack callBack);

	/**
	 * 在新事务内，在指定分片下执行SQL方法
	 * 
	 * @param shard
	 *            分片号，即 DBP GROUP ID
	 * @param callBack
	 *            执行SQL的方法（带返回值）
	 * @return
	 */
	void executeNewTransaction(String shard, SqlVoidCallBack callBack);
}
